home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1999 March / EnigmA AMIGA RUN 35 (1999)(G.R. Edizioni)(IT)[!][issue 1999-03].iso / earcd / devel / vbcc-68k-src / machines / amiga68k / libsrc / extra / chdir.c next >
C/C++ Source or Header  |  1999-01-01  |  529b  |  34 lines

  1. #include <stdlib.h>
  2. #include <stdio.h>
  3. #include <dos/dos.h>
  4.  
  5. static BPTR oldlock;
  6. static int havelock;
  7.  
  8. static void __exitchdir(void)
  9. {
  10.   if (havelock) UnLock(CurrentDir(oldlock));
  11. }
  12.  
  13.  
  14. int chdir(const char *path)
  15. {
  16.   BPTR fl;
  17.   int ret;
  18.  
  19.   if(!havelock){
  20.       if (atexit(__exitchdir)) exit(EXIT_FAILURE);
  21.       if (!(fl=Lock("",SHARED_LOCK))) exit(EXIT_FAILURE);
  22.       oldlock=CurrentDir(fl);
  23.       havelock=1;
  24.   }
  25.  
  26.   if ((fl=Lock((STRPTR)path,SHARED_LOCK)))
  27.   {
  28.     UnLock(CurrentDir(fl));
  29.     return(0);
  30.   }
  31.   return(EOF);
  32. }
  33.  
  34.